home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 October / CD CHIP.ISO / Vari / Multimed / 95ITERAT / _SETUP.1 / rw1_eqtns.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1997-01-16  |  17.8 KB  |  897 lines

  1. #include "stdafx.h"
  2. #include "itriazon.h"
  3. #include "itriadoc.h"
  4. #include "itriavw.h"
  5. #include "external.h"
  6. #include "rw1.h"
  7. #include "rw2.h"
  8. //#include "cmplx.h"
  9. #include "math.h"
  10. #include "Two_Num.h"
  11. #include "nthorder.h"
  12.  
  13. ////////////////////////////////////////////////////////////
  14. // Real World equations start here
  15. ////////////////////////////////////////////////////////////
  16.  
  17. void CIterationsView::RealWorld()
  18. {
  19.     //char cstr[81];
  20.     i = jrw = 0;
  21.     if (nDistortion >= 16 && nDistortion <= 50)
  22.     {
  23.         RealWorld2();
  24.       return;
  25.   }    
  26.   
  27.     //if (cx == 0)
  28.  
  29.     switch (nDistortion)
  30.     {
  31.         case 51:
  32.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  33.             {
  34.                 z = (z^rn).csin() + (z^rm) + c; 
  35.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  36.             }
  37.             if (nFilter) Filter_Complete();
  38.             break;
  39.  
  40.         case 52:
  41.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  42.             {
  43.                 z = ((z^3) / ((z+.1)^2)) + c;
  44.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  45.             }
  46.             if (nFilter) Filter_Complete();
  47.             break;
  48.  
  49.         case 53:
  50.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  51.             {
  52.                 z = (z^3).csin() + ((c^3)*2);
  53.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  54.             }
  55.             if (nFilter) Filter_Complete();
  56.             break;
  57.  
  58.         case 54:
  59.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  60.             {
  61.                 z = ((z^2) + c).csin() + z;
  62.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  63.             }
  64.             if (nFilter) Filter_Complete();
  65.             break;
  66.  
  67.         case 55:
  68.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  69.             {
  70.                 z = ((z*2) + c).csin() + c;
  71.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  72.             }
  73.             if (nFilter) Filter_Complete();
  74.             break;
  75.  
  76.         case 56:
  77.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  78.             {
  79.                 z = c*(z.csin() + z.ccos());
  80.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  81.             }
  82.             if (nFilter) Filter_Complete();
  83.             break;
  84.  
  85.         case 57:        // 2rd Order Newton Nova
  86.             if (bCombo) 
  87.                 z = c;
  88.             else
  89.                 z = cmplx(x, y);
  90.  
  91.             if (jul == 1 && !bCombo)
  92.             {
  93.                 c = cmplx(cx, cy);                
  94.             }
  95.  
  96.             z += 1;
  97.             z2 = cmplx(42,42);
  98.  
  99.             JMAX = NMAX-2;
  100.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  101.             {
  102.                 z2 = z;        
  103.             z = z - (z*z-1)/(2*z) + c;
  104.  
  105.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  106.             }
  107.             if (nFilter) Filter_Complete();            
  108.             break;
  109.  
  110.         case 58:        // 3rd Order Newton Nova
  111.             //temp_x = z.real();
  112.             //temp_y = z.imag();
  113.  
  114.             //sprintf(cstr,"x=%f, y=%f",x, y);
  115.             //Status_Bar(cstr);
  116.  
  117.             if (bCombo) 
  118.                 z = c;
  119.             else
  120.                 z = cmplx(x, y);
  121.  
  122.             if (jul == 1 && !bCombo)
  123.             {
  124.                 c = cmplx(cx, cy);                
  125.             }
  126.  
  127.             z += 1;
  128.             z2 = cmplx(42,42);
  129.             JMAX = NMAX-2;
  130.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  131.             {
  132.                 z2 = z;        
  133.             z = z - (z*z*z-1)/(3*z*z) + c;
  134.  
  135.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  136.             }
  137.             if (nFilter) Filter_Complete();            
  138.             break;
  139.  
  140.         case 59:        // 4th Order Newton Nova
  141.             if (bCombo) 
  142.                 z = c;
  143.             else
  144.                 z = cmplx(x, y);
  145.  
  146.             if (jul == 1 && !bCombo)
  147.             {
  148.                 c = cmplx(cx, cy);                
  149.             }
  150.  
  151.             z += 1;
  152.             z2 = cmplx(42,42);
  153.             JMAX = NMAX-2;
  154.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  155.             {
  156.                 z2 = z;        
  157.             z = z - (z*z*z*z-1)/(4*z*z*z) + c;
  158.  
  159.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  160.             }
  161.             if (nFilter) Filter_Complete();            
  162.             break;
  163.  
  164.         case 60:   // 5rd Order Newton Nova
  165.             if (bCombo) 
  166.                 z = c;
  167.             else
  168.                 z = cmplx(x, y);
  169.  
  170.             if (jul == 1 && !bCombo)
  171.             {
  172.                 c = cmplx(cx, cy);                
  173.             }
  174.  
  175.             z += 1;
  176.             z2 = cmplx(42,42);
  177.             JMAX = NMAX-2;
  178.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  179.             {
  180.                 z2 = z;        
  181.             z = z - (z*z*z*z*z-1)/(5*z*z*z*z) + c;
  182.  
  183.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  184.             }
  185.             if (nFilter) Filter_Complete();            
  186.             break;
  187.  
  188.         case 61:
  189.             if (bCombo) 
  190.                 z = c;
  191.             else
  192.                 z = cmplx(x, y);
  193.                         
  194.             if (jul == 1 && !bCombo)
  195.             {
  196.                 z1 = cmplx(cx, cy);
  197.             }
  198.             else
  199.             {
  200.                 z1 = cmplx(0,0);
  201.             }
  202.             z2 = cmplx(42,42);
  203.             JMAX = NMAX-2;
  204.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  205.             {
  206.                 z2 = z;        
  207.                 z = ((cn-1)*(z^cn)+cm)/(cn*(z^(cn-1))) + z1;
  208.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  209.             }
  210.             if (nFilter) Filter_Complete();            
  211.             break;
  212.  
  213.         case 62:
  214.             if (bCombo) 
  215.                 z = c;
  216.             else
  217.                 z = cmplx(x, y);
  218.  
  219.             if (jul == 1 && !bCombo)
  220.             {
  221.                 z1 = cmplx(cx, cy);
  222.             }
  223.             else
  224.             {
  225.                 z1 = cmplx(0,0);
  226.             }
  227.             z2 = cmplx(42,42);
  228.             JMAX = NMAX-2;
  229.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  230.             {
  231.                 z2 = z;
  232.             z = ((2*z)/3 + 1/(3*z*z)).clog() + z1;  // 
  233.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  234.             }
  235.             if (nFilter) Filter_Complete();
  236.             break;
  237.  
  238.         case 63:
  239.             if (bCombo) 
  240.                 z = c;
  241.             else
  242.                 z = cmplx(x, y);
  243.  
  244.             if (jul == 1 && !bCombo)
  245.             {
  246.                 z1 = cmplx(cx, cy);
  247.             }
  248.             else
  249.             {
  250.                 z1 = cmplx(0,0);
  251.             }
  252.             z2 = cmplx(42,42);
  253.             JMAX = NMAX-2;
  254.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  255.             {
  256.                 z2 = z;
  257.             z = z - ((z^5)-1)/(4*(z^4)) + z1;
  258.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  259.             }
  260.             if (nFilter) Filter_Complete();
  261.             break;
  262.  
  263.         case 64:
  264.             if (bCombo) 
  265.                 z = c;
  266.             else
  267.                 z = cmplx(x, y);
  268.  
  269.             if (jul == 1 && !bCombo)
  270.             {
  271.                 z1 = cmplx(cx, cy);
  272.             }
  273.             else
  274.             {
  275.                 z1 = cmplx(0,0);
  276.             }
  277.             z2 = cmplx(42,42);
  278.             JMAX = NMAX-2;
  279.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  280.             {
  281.                 z2 = z;
  282.             z = (z - ((z^3)-1)/(3*(z^2))) + ((z^2)-1)/(3*(z^3)) + z1;
  283.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  284.             }
  285.             if (nFilter) Filter_Complete();
  286.             break;
  287.  
  288.         case 65:
  289.             if (bCombo) 
  290.                 z = c;
  291.             else
  292.                 z = cmplx(x, y);
  293.  
  294.             if (jul == 1 && !bCombo)
  295.             {
  296.                 z1 = cmplx(cx, cy);
  297.             }
  298.             else
  299.             {
  300.                 z1 = cmplx(0,0);
  301.             }
  302.             z2 = cmplx(42,42);
  303.             JMAX = NMAX-2;
  304.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  305.             {
  306.                 z2 = z;        
  307.             z = z - ((z^3)-1)/(3*(z^2)) + (z-1)/(1-z^3) + z1;
  308.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  309.             }
  310.             if (nFilter) Filter_Complete();
  311.             break;
  312.  
  313.         case 66:
  314.             if (bCombo) 
  315.                 z = c;
  316.             else
  317.                 z = cmplx(x, y);
  318.  
  319.             if (jul == 1 && !bCombo)
  320.             {
  321.                 z1 = cmplx(cx, cy);
  322.             }
  323.             else
  324.             {
  325.                 z1 = cmplx(0,0);
  326.             }
  327.             z2 = cmplx(42,42);
  328.             JMAX = NMAX-2;
  329.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  330.             {
  331.                 z2 = z;        
  332.             z = z - ((z^5)-1)/(4*(z^2)) + z1;
  333.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  334.             }
  335.             if (nFilter) Filter_Complete();
  336.             break;
  337.  
  338.         case 67:
  339.             if (bCombo) 
  340.                 z = c;
  341.             else
  342.                 z = cmplx(x, y);
  343.  
  344.             if (jul == 1 && !bCombo)
  345.             {
  346.                 z1 = cmplx(cx, cy);
  347.             }
  348.             else
  349.             {
  350.                 z1 = cmplx(0,0);
  351.             }
  352.             z2 = cmplx(42,42);
  353.             JMAX = NMAX-2;
  354.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  355.             {
  356.                 z2 = z;        
  357.             z = z - ((z^rn)-1)/(rn*(z^rm)) + z1;
  358.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  359.             }
  360.             if (nFilter) Filter_Complete();
  361.             break;
  362.  
  363.         case 68:
  364.             if (bCombo) 
  365.                 z = c;
  366.             else
  367.                 z = cmplx(x, y);
  368.  
  369.             if (jul == 1 && !bCombo)
  370.             {
  371.                 z1 = cmplx(cx, cy);
  372.             }
  373.             else
  374.             {
  375.                 z1 = cmplx(0,0);
  376.             }
  377.             z2 = cmplx(42,42);
  378.             JMAX = NMAX-2;
  379.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  380.             {
  381.                 z2 = z;        
  382.             //c = c - ((c^3)-1)/(3*(c^2));
  383.             //c = ((2*c)/3 + 1/(3*c*c)).csin();  // 
  384. //            c = (c - ((c^3)-c)/(3*(c^2)-1));  // 
  385.             z = (z - ((z^4)-z)/(4*(z^3)-1)) + z1;  // 
  386.             //c = (2*c)/3 + 1/(3*c*c);  // 
  387.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  388.             }
  389.             if (nFilter) Filter_Complete();            
  390.             break;
  391.  
  392.         case 69:
  393.             if (bCombo) 
  394.                 z = c;
  395.             else
  396.                 z = cmplx(x, y);
  397.  
  398.             if (jul == 1 && !bCombo)
  399.             {
  400.                 z1 = cmplx(cx, cy);
  401.             }
  402.             else
  403.             {
  404.                 z1 = cmplx(0,0);
  405.             }
  406.             z2 = cmplx(42,42);
  407.             JMAX = NMAX-2;
  408.             while ((z-z2).abs() > dMIN && i++ < JMAX)
  409.             {
  410.                 z2 = z;
  411.             z = (z - ((z^3)-z)/(3*(z^2)-1)) + z1;  // 
  412.             //c = (2*c)/3 + 1/(3*c*c);  // 
  413.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  414.             }
  415.             if (nFilter) Filter_Complete();
  416.             break;
  417.  
  418.         case 70:
  419.             if (jul == 0)
  420.             {
  421.                 z.set_real(cx);
  422.                 z.set_imag(cy);
  423.             }
  424.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  425.             {
  426.                 //z = .01+z/c;
  427.  
  428.                 z2 = z;
  429.                 z = z*z.csin() * c + c;
  430.                 c = (cn/(z2*100));
  431.  
  432.              if (nFilter) Delta_z(z.real(), z.imaginary());
  433.             }
  434.             if (nFilter) Filter_Complete();
  435.             break;        
  436.         
  437.         case 71:                            // 2nd Order Phoenix
  438.             z2 = cmplx(0,0);
  439.  
  440.             if (jul == 0)
  441.             {
  442.                 c *= cmplx(0,1);
  443.             }
  444.             else
  445.             {
  446.                 c *= cmplx(0,1);    
  447.                 z *= cmplx(0,1);
  448.             }
  449.  
  450.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  451.             {
  452.                 z1 = z;
  453.                 z = z*z+c.imag()+c.real()*z2;
  454.                 z2 = z1;
  455.              if (nFilter) Delta_z(z.real(), z.imaginary());
  456.             }
  457.             if (nFilter) Filter_Complete();
  458.             break;        
  459.         
  460.         case 72:                        // 3rd Order Phoenix
  461.             z2 = cmplx(0,0);
  462.             if (jul == 0)
  463.             {
  464.                 c *= cmplx(0,1);
  465.             }
  466.             else
  467.             {
  468.                 c *= cmplx(0,1);    
  469.                 z *= cmplx(0,1);
  470.             }
  471.  
  472.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  473.             {
  474.                 z1 = z;
  475.                 z = z*z*z+c.imag()+c.real()*z2;
  476.                 z2 = z1;
  477.              if (nFilter) Delta_z(z.real(), z.imaginary());
  478.             }
  479.             if (nFilter) Filter_Complete();
  480.             break;        
  481.         
  482.         case 73:                            // 4th Order Phoenix
  483.             z2 = cmplx(0,0);
  484.             if (jul == 0)
  485.             {
  486.                 c *= cmplx(0,1);
  487.             }
  488.             else
  489.             {
  490.                 c *= cmplx(0,1);    
  491.                 z *= cmplx(0,1);
  492.             }
  493.  
  494.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  495.             {
  496.                 z1 = z;
  497.                 z = z*z*z*z+c.imag()+c.real()*z2;
  498.                 z2 = z1;
  499.              if (nFilter) Delta_z(z.real(), z.imaginary());
  500.             }
  501.             if (nFilter) Filter_Complete();
  502.             break;        
  503.         
  504.         case 74:            // Quaternion Map [A1 and A3 Constant]
  505.             rmu0 = cx;
  506.             rmu1 = cy;
  507.             rmu2 = qk1;
  508.             rmu3 = qk2;
  509.  
  510.             x = x;
  511.             u = y;
  512.             y = qt1;
  513.             w = qt2;
  514.  
  515.             for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
  516.           {
  517.                 temp = x+x;
  518.                 x = x*x-y*y-u*u-w*w+rmu0;
  519.                 y = temp*y+rmu1;
  520.                 u = temp*u+rmu2;
  521.                 w = temp*w+rmu3;
  522.                 if (nFilter) Delta_z(x, u);
  523.             }
  524.             z = cmplx(x, u);
  525.             if (nFilter) Filter_Complete();
  526.  
  527.             break;        
  528.         
  529.         case 75:        // Quaternion Map [A0 and A1 Constant]
  530.             rmu0 = cx;
  531.             rmu1 = cy;
  532.             rmu2 = qk1;
  533.             rmu3 = qk2;
  534.  
  535.             u = x;
  536.             w = y;
  537.             x = qt1;
  538.             y = qt2;
  539.  
  540.             for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
  541.           {
  542.                 temp = x+x;
  543.                 x = x*x-y*y-u*u-w*w+rmu0;
  544.                 y = temp*y+rmu1;
  545.                 u = temp*u+rmu2;
  546.                 w = temp*w+rmu3;
  547.                 if (nFilter) Delta_z(u, w);
  548.             }
  549.             z = cmplx(u, w);
  550.             if (nFilter) Filter_Complete();
  551.  
  552.             break;        
  553.         
  554.         case 76:        // Quaternion Map [A0 and A2 Constant]
  555.             rmu0 = cx;
  556.             rmu1 = cy;
  557.             rmu2 = qk1;
  558.             rmu3 = qk2;
  559.  
  560.             y = x;
  561.             w = y;
  562.             x = qt1;
  563.             u = qt2;
  564.  
  565.             for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
  566.           {
  567.                 temp = x+x;
  568.                 x = x*x-y*y-u*u-w*w+rmu0;
  569.                 y = temp*y+rmu1;
  570.                 u = temp*u+rmu2;
  571.                 w = temp*w+rmu3;
  572.                 if (nFilter) Delta_z(y, w);
  573.             }
  574.             z = cmplx(y, w);
  575.             if (nFilter) Filter_Complete();
  576.  
  577.             break;        
  578.         
  579.         case 77:        // Quaternion Map [A0 and A3 Constant]
  580.             rmu0 = cx;
  581.             rmu1 = cy;
  582.             rmu2 = qk1;
  583.             rmu3 = qk2;
  584.  
  585.             y = y;
  586.             u = x;
  587.             x = qt1;
  588.             w = qt2;
  589.  
  590.             for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
  591.           {
  592.                 temp = x+x;
  593.                 x = x*x-y*y-u*u-w*w+rmu0;
  594.                 y = temp*y+rmu1;
  595.                 u = temp*u+rmu2;
  596.                 w = temp*w+rmu3;
  597.                 if (nFilter) Delta_z(u, y);
  598.             }
  599.             z = cmplx(u, y);
  600.             if (nFilter) Filter_Complete();
  601.  
  602.             break;        
  603.         
  604.         case 78:        // Quaternion Map [A1 and A2 Constant]
  605.             rmu0 = cx;
  606.             rmu1 = cy;
  607.             rmu2 = qk1;
  608.             rmu3 = qk2;
  609.  
  610.             x = x;
  611.             w = y;
  612.             y = qt1;
  613.             u = qt2;
  614.  
  615.             for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
  616.           {
  617.                 temp = x+x;
  618.                 x = x*x-y*y-u*u-w*w+rmu0;
  619.                 y = temp*y+rmu1;
  620.                 u = temp*u+rmu2;
  621.                 w = temp*w+rmu3;
  622.                 if (nFilter) Delta_z(x, w);
  623.             }
  624.             z = cmplx(x, w);
  625.             if (nFilter) Filter_Complete();
  626.  
  627.             break;        
  628.         
  629.         case 79:        // Quaternion Map [A2 and A3 Constant]
  630.             rmu0 = cx;
  631.             rmu1 = cy;
  632.             rmu2 = qk1;
  633.             rmu3 = qk2;
  634.  
  635.             x = x;
  636.             y = y;
  637.             u = qt1;
  638.             w = qt2;
  639.  
  640.             for (i = 0; i <= JMAX && x*x+y*y+u*u+w*w < dBailout ; i++)
  641.           {
  642.                 temp = x+x;
  643.                 x = x*x-y*y-u*u-w*w+rmu0;
  644.                 y = temp*y+rmu1;
  645.                 u = temp*u+rmu2;
  646.                 w = temp*w+rmu3;
  647.                 if (nFilter) Delta_z(x, y);
  648.             }
  649.             z = cmplx(x, y);
  650.             if (nFilter) Filter_Complete();
  651.  
  652.             break;        
  653.         
  654.         case 80:
  655.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  656.             {
  657.                 z = z + c;
  658.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  659.             }
  660.             if (nFilter) Filter_Complete();
  661.             break;
  662.         
  663.         case 81:     // Squares
  664.  
  665.             x_size = (rn*2) / (double) NMAX;
  666.             y_size = (rn*2) / (double) NMAX;
  667.             z = c;
  668.             i = (int) (fabs(z.real() / x_size) + fabs(z.imag() / y_size));
  669.             if (nFilter) Delta_z(z.real(), z.imaginary());
  670.             if (nFilter) Filter_Complete();
  671.  
  672.             break;
  673.         
  674.         case 82:   // Circles
  675.  
  676.             x_size = (rn*2) / (double) NMAX;
  677.             y_size = (rn*2) / (double) NMAX;
  678.             c.set_real(fabs(c.real() / x_size));
  679.             c.set_imag(fabs(c.imag() / y_size));
  680.             z = c;
  681.             i = (int) sqrt(z.real()*z.real()+z.imag()*z.imag());
  682.  
  683.             if (nFilter) Delta_z(z.real(), z.imaginary());
  684.             if (nFilter) Filter_Complete();
  685.             
  686.             break;
  687.  
  688.         case 83:     // Radial
  689.  
  690.             deg = x_y_to_degrees(c.real(), c.imag());
  691.             temp = ((double) NMAX)/(90*rn);
  692.             i = (int) (temp * deg);
  693.             z = c;
  694.  
  695.             if (nFilter) Delta_z(z.real(), z.imaginary());
  696.             if (nFilter) Filter_Complete();
  697.             break;
  698.  
  699.         case 84:     // Spiral
  700.  
  701.             deg = x_y_to_degrees(c.real(), c.imag());
  702.             temp = ((double) NMAX)/(180*rn);
  703.  
  704.             x_size = rn / (double) NMAX;
  705.             y_size = rn / (double) NMAX;
  706.             c.set_real(fabs(c.real() / x_size));
  707.             c.set_imag(fabs(c.imag() / y_size));
  708.             z = c;
  709.                         
  710.             i = (int) (temp*deg  + sqrt(z.real()*z.real()+z.imag()*z.imag()));
  711.             
  712.             if (nFilter) Delta_z(z.real(), z.imaginary());
  713.             if (nFilter) Filter_Complete();
  714.             //z = cmplx(((temp * deg) + sqrt(z.real()*z.real()+z.imag()*z.imag())),0);
  715.  
  716.             //if (nFilter) Delta_z(z.real(), z.imaginary());
  717.             //if (nFilter) Filter_Complete();
  718.             break;
  719.  
  720.         case 85:
  721.             x_size = (CRMAX-CRMIN) / (double) NMAX;
  722.             z = c;
  723.             i = (int) ((z.real() + CRMIN) / x_size);
  724.             if (nFilter) Delta_z(z.real(), z.imaginary());
  725.             if (nFilter) Filter_Complete();
  726.             break;
  727.         
  728.         case 90:
  729.             if (jul == 0)
  730.                 z = c;
  731.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  732.             {
  733.                 z = c*((z^cn) / cn*(z^cn) + z);
  734.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  735.             }
  736.             if (nFilter) Filter_Complete();
  737.             break;
  738.         
  739.         case 91:
  740.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  741.             {
  742.                 z = z.csin() + (z^cn) + c;
  743.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  744.             }
  745.             if (nFilter) Filter_Complete();
  746.             break;
  747.         
  748.         case 92:
  749.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  750.             {
  751.                 z = c*z*(2 - (z^cn));
  752.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  753.             }
  754.             if (nFilter) Filter_Complete();
  755.             break;
  756.         
  757.         case 93:
  758.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  759.             {
  760.                 z = acos(z) + (z^cn) + c;
  761.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  762.             }
  763.             if (nFilter) Filter_Complete();
  764.             break;
  765.         
  766.         case 94:
  767.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  768.             {
  769.                 z = z.csin() + z.csin() * (z^cn) + c;
  770.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  771.             }
  772.             if (nFilter) Filter_Complete();
  773.             break;
  774.         
  775.         case 95:
  776.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  777.             {
  778.                 z = z.csin() + z.ccos() * (z^cn) + c;
  779.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  780.             }
  781.             if (nFilter) Filter_Complete();
  782.             break;
  783.         
  784.         case 96:
  785.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  786.             {
  787.                 z = z.csin() + acos(z) * (z^cn) + c;
  788.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  789.             }
  790.             if (nFilter) Filter_Complete();
  791.             break;
  792.  
  793.         case 97:
  794.             //This fractal was created by our team and is calculated by the following function:
  795.             //To begin, z=pixel, and c=pixel-sin(z). Then, each iteration is:
  796.       //        c=pixel+c/z-z, z=z*pixel+c/z
  797.             if (jul == 0)
  798.             {
  799.                 z.set_real(cx);
  800.                 z.set_imag(cy);
  801.             }
  802.             z2=c-c.csin();
  803.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  804.             {
  805.                 z2=c+z2/z-z;
  806.                 z=z*c+z2/c;
  807.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  808.             }
  809.             if (nFilter) Filter_Complete();
  810.             break;
  811.  
  812.         case 98:
  813.             //This is a fractal generated by our team using the following formula:
  814.             //To begin, z=pixel. Then, each iteration is z=z^4 - z - 0.79
  815. //            for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  816. //            {
  817. //                z = (z^cn) - z - c;
  818. //                if (nFilter) Delta_z(z.real(), z.imaginary());
  819. //            }
  820. //            if (nFilter) Filter_Complete();
  821.  
  822.             
  823.             if (jul == 0)
  824.             {
  825.                 z.set_real(cx);
  826.                 z.set_imag(cy);
  827.             }
  828.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  829.             {
  830.                 z2 = z;
  831.                 z = z*c.csin() - z;
  832.                 c = (cn/(z2*10));
  833.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  834.             }
  835.             if (nFilter) Filter_Complete();
  836.             break;
  837.  
  838.         case 99:
  839.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  840.             {
  841.                 //z = (z^(cn-1))^c;
  842.  
  843.                 z2    = z;
  844.                 z        = (z^cn)+c;
  845.                 c        = z2;
  846.  
  847.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  848.             }
  849.             if (nFilter) Filter_Complete();
  850.             
  851.             break;
  852.  
  853.         case 100:
  854.             if (jul == 0)
  855.             {
  856.                 z.set_real(cx);
  857.                 z.set_imag(cy);
  858.             }
  859.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  860.             {
  861.                 //z = c*z*(cn-z);
  862.  
  863.                 z2 = z;
  864.                 z = z.csin() - c;
  865.                 c = (cn/(z2*100));
  866.                 
  867.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  868.             }
  869.             if (nFilter) Filter_Complete();
  870.             
  871.             break;        
  872.  
  873.         default:
  874.             AfxMessageBox("Real World Fractals, shouldn't get here...");
  875.             break;
  876.     }
  877. }
  878.  
  879. double CIterationsView::x_y_to_degrees(double x_, double y_)
  880. {
  881.     double a;
  882.  
  883.     if (x_ >= 0 && y_ >= 0)
  884.         a = atan(y_/x_);                // Q0
  885.     else
  886.     if (x_ < 0 && y_ >= 0)
  887.         a = atan(y_/x_)+pi;            // Q1
  888.     else
  889.     if (x_ < 0 && y_ < 0)        
  890.         a = atan(y_/x_)+pi;            // Q3
  891.     else
  892.         a = atan(y_/x_)+2*pi;        // Q4
  893.  
  894.     return a*rad;
  895. }
  896.  
  897.